log4j的log level(日志等级)
Contents
Introduction
今天看代码,用log4j实现自己的log类,对其中的isTraceEnabled
很疑惑,然后了解了一下log4j的log level
log4j的等级介绍
5个标准的log levelDEBUG Level
- DEBUG Level
该等级为开发者DEBUG程序提供更多信息。 - INFO Level
该等级提供过程和指定的状态信息,更加适用于终端用户。This level is one level higher than DEBUG. - WARN Level
该等级提供未知事件的警告信息,但是这些警告信息不会终止程序的运行。 - ERROR Level
提供导致严重错误或者导致不稳定状态的信息。This level is one level higher than WARN. - FATAL Level
很不常用的一个等级。但是很容易理解:一旦你获得这类信息,你的应用程序就奔溃了。
两个特殊log4j等级
- ALL Level
用以开启所有等级的日志信息。一旦配置成功,系统将不会考虑等级限制。 - OFF Level
和ALL Level相反,用来关闭所有log信息。新增的trace level
TRACE Level
该特性是在log4j 1.2.12中开始引入的。该等级比DEBUG等级提供更多详细信息,处于log4j日志等级的顶端。
用户自定义的level(Custom log4j levels)
对于常见的应用来说,log4j的日志等级已经足够。在某些特殊情况下,你可以通过继承org.apache.log4j.Level来实现自定义日志等级。
log4j的日志输出
每当创建一个logger时,一般情况下自己指定日志等级。日志会把大于等于该等级的信息都输出来。标准log4j的日志等级如下图:
log4j的等级继承规则
如果没有在初始化logger时指定日志等级,则新logger会按照以下规则进行继承。
这里用一个例子说明更直接:
比如有一个未指派日志等级的
com.foo.bar
包,那么它会继承com.foo
包的日志等级。如果com.foo
依然没有指定日志等级,那么它会继承log4j
的基本等级(root level
),而log4j的基本等级总是可以获得,默认为DEBUG Level
。
参考资料
参考英文文档:http://javapapers.com/log4j/log4j-levels/